<?php
/**
 * 公共函数库
 */
/**
 * 加密字符串
 * @param $username     用户名
 * @param $password     密码
 * @param $timestamp    时间戳
 * @return string       返回加密后的字符串
 */
function md5_sign($username,$password,$timestamp){
    return strtolower(md5($username.$password.$timestamp.$password));
}

/**
 * 计算获得access_token
 * @param $username     用户名
 * @param $password     密码
 * @return string       返回access_token
 */
function generate_token($username,$password){

    $rank_word = array(
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
        1,2,3,4,5,6,7,8,9,0
    );
    $words = '';
    for($i=0;$i<count($rank_word);$i++){
        $words .= $rank_word[floor(mt_rand(0,count($rank_word)))];
        if($i==8) break;
    }
    $access_token = md5($username . $words . $password) . '_' . time();
    return $access_token;
}

/**
 * 给单个字符串添加单引号
 * @param $str          需要处理的字符串
 * @return string       返回处理后的字符串
 */
function addApostropheToString($str){
    $tempArr = explode(',',$str);
    $tempStr = '';
    for($i=0;$i<count($tempArr);$i++){
        if($i != count($tempArr) - 1){
            $tempStr .= "'".$tempArr[$i]."'".",";
        }else{
            $tempStr .= "'".$tempArr[$i]."'";
        }
    }
    return $tempStr;
}

function changeValueToKey($arr,$param1,$param2){
    $_obj = array();
    foreach($arr as $key=>$val){
        $_obj[$val[$param2]] = $val[$param1];
    }
    return $_obj;
}

// 定义一个函数getIP() 客户端IP，
function getIP(){
    if (getenv("HTTP_CLIENT_IP"))
        $ip = getenv("HTTP_CLIENT_IP");
    else if(getenv("HTTP_X_FORWARDED_FOR"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if(getenv("REMOTE_ADDR"))
        $ip = getenv("REMOTE_ADDR");
    else $ip = "Unknow";

    if(preg_match('/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/', $ip))
        return $ip;
    else
        return '';
}

// 关联索引=> 数字索引
function changeKey($arr,$k){
    foreach($arr as $key=>$val){
        $skus[$key] = $val[$k];
    }
    return $skus;
}

/**
 * 取出数组中某个字段的所有键值（二维数组，目前不支持二维以上的数组）
 * @param $arr
 * @param $field
 * @return array
 */
function getSignalValOfArr($arr,$field){
    $temp_arr = array();
    foreach($arr as $key=>$val){
        $temp_arr[] = $val[$field];
    }
    return $temp_arr;
}

/**
 * 修改订单状态
 * @param $order_status   订单状态
 * @param $field          修改后的订单状态
 *
 * @return int
 */
function changeOrderStatus($order_status){
    //switch($order_info['pay_status']){
    //$order_status['orderStatus']
    $status = 0;
    switch($order_status){
        case -1 : $status = 1;break;     //审核中
        case 0  : $status = 2;break;     //待发货
        case 1  : $status = 3;break;     //已发货
        case 2  : $status = 4;break;     //部分发货
        case 3  : $status = 7;break;     //退货
        case 4  : $status = 7;break;     //退货
        case 5  : $status = 5;break;     //已完成
        case 6  : $status = 6;break;     //已取消
        case 7  : $status = 8;break;     //订单异常
        case 8  : $status = 9;break;     //审核不通过，订单已取消
        case 8  : $status = 9;break;     //审核不通过，订单已取消
        default :
            break;
    }
    return $status;
}
